#ifndef CJGORDER_H
#define CJGORDER_H

class CJgBoxData;
class CJgDependency;
class CJgOrderProcess;
class CJgDepandency;

#include <QDateTime>
#include <QStringList>
#include <qtypes.h>
class CJgOrder
{
public:
    QString mLocalOrderNum;//本地订单号
    QString mOuterOrderNum;//PO号
    QString mRemark;//被合并的PO号，
    QString mLineColorNum;//线色号
    QString mLocalStyleNum;//本地款式编号
    QString mOuterStyleNum;//外部款式编号
    QString mGroupName;//组别1
    QString mGroup2Name;//组别2
    QString mCustomer;//客户
    QString mColorShader;//色差
    QString mColor;//颜色
    QDateTime mTimeOfOperation;//投产时间
    int miOrderStatus;//订单状态
    QDateTime mDeadLine;//交期
    QDateTime mPredictFinishTime;//预计交期
    QDateTime mRealFinishTime;//实际完成时间
    float mfProgress;//进度
    int miFinishedCnt;//完成件数
    bool mbCompletedFlag;//完成标志
    bool mbDiyFlag;//自定义补贴标志
    float mfOrderCoef;//补贴系数
    bool mbPriFlag;//急单标记
    int miHourTarget;//小时需完成件数
    //int miFeedSecs;//进料时长，不从数据库获取，
    //int miCycleSecs;//周转时长
    int miNow2DeadlineSecs;//从现在到货期的秒数，按照假期工作日实时计算
    int miOperate2Deadline;//从投产日到货期的描述，按照假期工作日实时计算
    int miFeededBoxCnt;//进料筐数累计
    float mfGSTTotalTime;
    bool mbValidFlag;
    int miLimitSecs;//加人阈值，没有显示，默认7200
    int miDeadLineGroup;//货期组别，从1开始排列，COrderRecord没有
    QMap<QString /*部件名*/, QVector< CJgOrderProcess *>  /*部件内工序*/ > mOrderProcessSetGroupByPart;//按部件分组的订单工序，向量内部需要按顺序排好
    //如果部件没有工序，说明这个部件的工序有问题，需要处理

    QMap<QString /*部件名*/, QVector<CJgBoxData *>  /*部件内的有效筐*/ > mCurBoxSetGroupByPart;//按部件分组的当前筐，内部按照尺码id，计划开始裁片排序好
    int miTotalPlanCnt;//订单的总件数


    QList<QSet<CJgDepandency*>*> DepandencySteps;
    bool isDepandencyError;//工序依赖分析错误
    QString DepandencyErrorDesp;//工序依赖分析失败描述
    QDateTime mRealStartTime;
    QDateTime mPlanStartTime;
    QString mProductMark;//生产备注
    int miCuttingStatus;//裁片生产状态		V=102
    QString mClippingCode;//收裁代码		V=102

    //V=103以下
    //mes相關的公共變量，由精確匹配的rowId，DeliveryId來決定一個訂單是否為新訂單
    QSet<QString> mRowId;//mes裏面對應PO處理過的唯一標識，如果是合并后的包含所有被合并的
    QSet<QString> mDeliveryId;//Mes裏面的收裁單編號，一個收裁單可能多個rowId一起送到車縫，可以提示合并生產
    QString mMergePO;//合裁PO，相同的合裁PO再投产时提示合并,用逗號隔斷，在這裏不拆分
    QString mMergeTo;//合并到，填本地的單號，普通订单和拆分前后的订单填写自己
    QSet<QString> mMergeBy;//從何處合并，填本地的單號，普通订单和拆分前后的订单填写自己
    QSet<QString> mSplitTo;//拆分到什麽訂單，填本地的單號，普通订单和合并前后的订单填写自己
    QString mSplitBy;//從什麽訂單拆分，填本地的單號，普通订单和合并前后的订单填写自己
    QString mPatterNum;//圖號
    //V=103以上


    //V=104以下
    QHash<qlonglong/*筐记录id*/, CJgBoxData *> mHistoryBox;
    QStringList mPartOrder;

    CJgOrder();
};

#endif // CJGORDER_H
